home *** CD-ROM | disk | FTP | other *** search
/ EuroCD 3 / EuroCD 3.iso / Emulators / v2600 / Source.lha / Source / amiga_keyb.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-04-24  |  5.5 KB  |  157 lines

  1. /*****************************************************************************
  2. Author     : Matthew Stroup
  3. Description: Amiga keyboard driver for v2600 Atari emulator
  4. Version    : 1.1 April 24, 1997
  5. ******************************************************************************/
  6.  
  7. /* The keyboard and mouse interface. */
  8. #include "types.h"
  9. #include "kmap.h"
  10. #include <hardware/cia.h>
  11.  
  12. extern int keymap[103];
  13.  
  14. #define CIAA 0xBFE001
  15.  
  16. struct CIA *cia = (struct CIA *) CIAA;
  17.  
  18. /* Update the current keyboard state. */
  19. void keybdrv_update (void)
  20. {
  21. }
  22.  
  23. /* Is this key presssed? */
  24. int keybdrv_pressed(int key)
  25. {
  26. UBYTE code;
  27.  
  28.     //Here's an evil hardware-banging keyboard routine...
  29.     /* Get a copy of the SDR value and invert it: */
  30.     code = cia->ciasdr ^ 0xFF;
  31.   
  32.     /* Shift all bits one step to the right, and put the bit that is */
  33.     /* pushed out last: 76543210 -> 07654321                         */
  34.     code = code & 0x01 ? (code>>1)+0x80 : code>>1;
  35.  
  36.     /* Return the Raw Key Code Value: */
  37.     return(code==keymap[key]);
  38. }
  39.  
  40. /* Defines the keyboard mappings */
  41. void keybdrv_setmap(void)
  42. {
  43.   keymap[  kmapSYSREQ              ]=0x5c;
  44.   keymap[  kmapCAPSLOCK            ]=0x62;
  45.   keymap[  kmapNUMLOCK             ]=0x5a;
  46.   keymap[  kmapSCROLLLOCK          ]=0x5b;
  47.   keymap[  kmapLEFTCTRL            ]=0x63;
  48.   keymap[  kmapLEFTALT             ]=0x64;
  49.   keymap[  kmapLEFTSHIFT           ]=0x60;
  50.   keymap[  kmapRIGHTCTRL           ]=0x63;
  51.   keymap[  kmapRIGHTALT            ]=0x65;
  52.   keymap[  kmapRIGHTSHIFT          ]=0x61;
  53.   keymap[  kmapESC                 ]=0x45;
  54.   keymap[  kmapBACKSPACE           ]=0x41;
  55.   keymap[  kmapENTER               ]=0x44;
  56.   keymap[  kmapSPACE               ]=0x40;
  57.   keymap[  kmapTAB                 ]=0x42;
  58.   keymap[  kmapF1                  ]=0x50;
  59.   keymap[  kmapF2                  ]=0x51;
  60.   keymap[  kmapF3                  ]=0x52;
  61.   keymap[  kmapF4                  ]=0x53;
  62.   keymap[  kmapF5                  ]=0x54;
  63.   keymap[  kmapF6                  ]=0x55;
  64.   keymap[  kmapF7                  ]=0x56;
  65.   keymap[  kmapF8                  ]=0x57;
  66.   keymap[  kmapF9                  ]=0x58;
  67.   keymap[  kmapF10                 ]=0x59;
  68.   keymap[  kmapF11                 ]=0x59;
  69.   keymap[  kmapF12                 ]=0x59;
  70.   keymap[  kmapA                   ]=0x20;
  71.   keymap[  kmapB                   ]=0x35;
  72.   keymap[  kmapC                   ]=0x33;
  73.   keymap[  kmapD                   ]=0x22;
  74.   keymap[  kmapE                   ]=0x12;
  75.   keymap[  kmapF                   ]=0x23;
  76.   keymap[  kmapG                   ]=0x24;
  77.   keymap[  kmapH                   ]=0x25;
  78.   keymap[  kmapI                   ]=0x17;
  79.   keymap[  kmapJ                   ]=0x26;
  80.   keymap[  kmapK                   ]=0x27;
  81.   keymap[  kmapL                   ]=0x28;
  82.   keymap[  kmapM                   ]=0x37;
  83.   keymap[  kmapN                   ]=0x36;
  84.   keymap[  kmapO                   ]=0x18;
  85.   keymap[  kmapP                   ]=0x19;
  86.   keymap[  kmapQ                   ]=0x10;
  87.   keymap[  kmapR                   ]=0x13;
  88.   keymap[  kmapS                   ]=0x21;
  89.   keymap[  kmapT                   ]=0x14;
  90.   keymap[  kmapU                   ]=0x16;
  91.   keymap[  kmapV                   ]=0x34;
  92.   keymap[  kmapW                   ]=0x11;
  93.   keymap[  kmapX                   ]=0x32;
  94.   keymap[  kmapY                   ]=0x15;
  95.   keymap[  kmapZ                   ]=0x31;
  96.   keymap[  kmap1                   ]=0x1;
  97.   keymap[  kmap2                   ]=0x2;
  98.   keymap[  kmap3                   ]=0x3;
  99.   keymap[  kmap4                   ]=0x4;
  100.   keymap[  kmap5                   ]=0x5;
  101.   keymap[  kmap6                   ]=0x6;
  102.   keymap[  kmap7                   ]=0x7;
  103.   keymap[  kmap8                   ]=0x8;
  104.   keymap[  kmap9                   ]=0x9;
  105.   keymap[  kmap0                   ]=0xa;
  106.   keymap[  kmapMINUS               ]=0xb;
  107.   keymap[  kmapEQUAL               ]=0xc;
  108.   keymap[  kmapLBRACKET            ]=0x1a;
  109.   keymap[  kmapRBRACKET            ]=0x1b;
  110.   keymap[  kmapSEMICOLON           ]=0x29;
  111.   keymap[  kmapTICK                ]=0x0;
  112.   keymap[  kmapAPOSTROPHE          ]=0x2a;
  113.   keymap[  kmapBACKSLASH           ]=0xd;
  114.   keymap[  kmapCOMMA               ]=0x38;
  115.   keymap[  kmapPERIOD              ]=0x39;
  116.   keymap[  kmapSLASH               ]=0x3a;
  117.   keymap[  kmapINS                 ]=0xf;
  118.   keymap[  kmapDEL                 ]=0x46;
  119.   keymap[  kmapHOME                ]=0x3d;
  120.   keymap[  kmapEND                 ]=0x1d;
  121.   keymap[  kmapPGUP                ]=0x3f;
  122.   keymap[  kmapPGDN                ]=0x1f;
  123.   keymap[  kmapLARROW              ]=0x4f;
  124.   keymap[  kmapRARROW              ]=0x4e;
  125.   keymap[  kmapUARROW              ]=0x4c;
  126.   keymap[  kmapDARROW              ]=0x4d;
  127.   keymap[  kmapKEYPAD0             ]=0xf;
  128.   keymap[  kmapKEYPAD1             ]=0x1d;
  129.   keymap[  kmapKEYPAD2             ]=0x1e;
  130.   keymap[  kmapKEYPAD3             ]=0x1f;
  131.   keymap[  kmapKEYPAD4             ]=0x2d;
  132.   keymap[  kmapKEYPAD5             ]=0x2e;
  133.   keymap[  kmapKEYPAD6             ]=0x2f;
  134.   keymap[  kmapKEYPAD7             ]=0x3d;
  135.   keymap[  kmapKEYPAD8             ]=0x3e;
  136.   keymap[  kmapKEYPAD9             ]=0x3f;
  137.   keymap[  kmapKEYPADDEL           ]=0x3c;
  138.   keymap[  kmapKEYPADSTAR          ]=0x5d;
  139.   keymap[  kmapKEYPADMINUS         ]=0x4a;
  140.   keymap[  kmapKEYPADPLUS          ]=0x5e;
  141.   keymap[  kmapKEYPADENTER         ]=0x43;
  142.   keymap[  kmapCTRLPRTSC           ]=0x5d;
  143.   keymap[  kmapSHIFTPRTSC          ]=0x5d;
  144.   keymap[  kmapKEYPADSLASH         ]=0x5c;
  145. }
  146.  
  147. /* Zeros the keyboard array, and installs event handlers. */
  148. int keybdrv_init (void)
  149. {
  150.     return 0;
  151. }
  152.  
  153. /* Close the keyboard and tidy up */
  154. void keybdrv_close (void)
  155. {
  156. }
  157.